package com.shihb.chapter04collection


import scala.collection.mutable.ArrayBuffer

/**
 * Description:
 *
 * @author shihb
 * @date 2020/9/21 16:28
 */
object Demo01Array {
  def main(args: Array[String]): Unit = {

    test5
  }

  /**
   * 定长数组Array对象说明演示
   */
  def test: Unit ={
    //创建一个Array对象 [Int]表示泛型[Any]可以放任意数据,有默认值
    // 定义方式一
    val arr01 = new Array[Int](4)
    println(arr01.length)
    for(i<-arr01) println(i)
    println("----------------")
    // 修改用下标,(),下班从0开始
    arr01(3)=3
    for(i<-arr01) println(i)
    println("----------------")
    // 定义方式二
    //使用objet Array 的apply
    // 直接初始化数组,类型会自动推断,有多种就会Any
    Array(0,1,2,3,"4").foreach(println)

  }

  /**
   * 变长数组ArrayBuffer说明演示
   */
  def test2: Unit ={
    //声明
    val arr = ArrayBuffer[Any](0,1,2,3,"4")
    arr.foreach(println)
    //通过下标访问和修改
    arr(3)="new3"
    println("a(3)="+arr(3))
    //使用append追加,支持可变参数
    //可以理解为数组的扩展
    println(arr.hashCode())
    arr.append("5",6.0)
    println(arr.hashCode())
    arr.foreach(println)
    println("--------------")
    // 删除，根据下标来删除
    arr.remove(0)
    arr.foreach(println)
  }

  /**
   * 定长数组，变长数组相互转换
   */
  def test3: Unit ={
    val buffer = ArrayBuffer[Any]()
    buffer.append(1,2,3)
    println("修改前",buffer.hashCode())
    buffer(2)=1
    println("修改后",buffer.hashCode())
    val array = buffer.toArray
    println("修改前",array.hashCode())
    array(2)=2
    println("修改后",array.hashCode())
    val buffer1 = array.toBuffer
    println("修改前",buffer1.hashCode())
    buffer1(2)=3
    println("修改前",buffer1.hashCode())

  }

  /**
   * 多维数组
   */
  def test4: Unit ={
    // .ofDim[Double](3,2)
    //.ofDim定义多维数组，Double泛型,3行,2列
    val array = Array.ofDim[Double](3, 2)
    for(i<- array){
      for(j<- i){
        print(j+"\t")
      }
      println()
    }

    array(1)(1)=3.4
    println("============")
    for(i<- array){
      for(j<- i){
        print(j+"\t")
      }
      println()
    }

  }

  /**
   * scala集合和java集合互转
   */
  def test5: Unit ={
    // scala转java
    val buffer = ArrayBuffer[String]("1", "2", "3")
    import  scala.collection.JavaConversions.bufferAsJavaList
    val builder = new ProcessBuilder(buffer)
    //这里的list 就是java的ArrayList
    val list = builder.command()
    println(list)
    // java转scala
    import scala.collection.JavaConversions.asScalaBuffer
    import scala.collection.mutable
    val scalaArr:mutable.Buffer[String]= list
    scalaArr.append("jack")
    println(scalaArr)



  }
  def test6: Unit ={

  }

}
